;100001.asm  利用I/O指令读取CMOS实时钟值，并显示出来。
displ macro opr		    ；宏DISPL
mov ah,2
mov dl,opr
int 21h
endm
.model small
.data
time1 db ?
time2 db ?
n db 4
.code
start:
mov ax,@data        
mov ds,ax
lll:
mov al,n					;n=4、2、0，为时、分、秒单元地址	
out 70h,al				  ;输出到地址口
in al,71h				   ;从数据口读取小时、分、秒
mov ah,al				   ;al=压缩BCD码，如15点00010101
mov cl,4
shr ah,cl				   ;ah右移4位，高4位→低4位00000001
add ah,30h				  ;ASCII码
and al,0fh				  ;保留个位数
add al,30h				  ;ASCII码
mov time1,ah
mov time2,al
displ time1				 ;显示十位
displ time2				 ;显示个位
sub n,2				  ;下一个地址
js exit
displ ':'				   ;显示:
jmp lll						
exit:
mov ah,4ch
int 21h
end start